home *** CD-ROM | disk | FTP | other *** search
/ Aminet 2 / Aminet AMIGA CDROM (1994)(Walnut Creek)[Feb 1994][W.O. 44790-1].iso / Aminet / comm / term / term34Source.lha / ModemPanel.c < prev    next >
C/C++ Source or Header  |  1993-07-16  |  17KB  |  606 lines

  1. /*
  2. **    ModemPanel.c
  3. **
  4. **    Editing panel for modem configuration
  5. **
  6. **    Copyright © 1990-1993 by Olaf `Olsen' Barthel & MXM
  7. **        All Rights Reserved
  8. */
  9.  
  10. #include "termGlobal.h"
  11.  
  12. enum    {    GAD_MODEMINIT,GAD_MODEMEXIT,GAD_MODEMHANGUP,GAD_NOCARRIER,GAD_NODIALTONE,GAD_CONNECT,
  13.         GAD_VOICE,GAD_RING,GAD_BUSY,GAD_OK,GAD_ERROR,GAD_DIALPREFIX,GAD_DIALSUFFIX,GAD_REDIALDELAY,
  14.         GAD_DIALRETRIES,GAD_DIALTIMEOUT,GAD_REDIAL,GAD_AUTOBAUD,GAD_DROPDTR,
  15.         GAD_NOCARRIER_IS_BUSY,GAD_CONNECT_LIMIT,GAD_LIMIT_MACRO,GAD_SELECT_MACRO,
  16.         GAD_TIME_TO_CONNECT,GAD_USE,GAD_CANCEL,GAD_DEFAULT };
  17.  
  18. STATIC UBYTE * __saveds
  19. ShowMinutes(struct Gadget *SomeGadget,WORD Level)
  20. {
  21.     STATIC UBYTE Buffer[15];
  22.  
  23.     SPrintf(Buffer,LocaleString(MSG_GLOBAL_SHOW_MINUTES_TXT),Level / 6,(Level % 6) * 10);
  24.  
  25.     return(Buffer);
  26. }
  27.  
  28. STATIC UBYTE * __saveds
  29. ShowHours(struct Gadget *SomeGadget,WORD Level)
  30. {
  31.     STATIC UBYTE Buffer[15];
  32.  
  33.     SPrintf(Buffer,LocaleString(MSG_GLOBAL_SHOW_HOURS_TXT),Level / 60,Level % 60);
  34.  
  35.     return(Buffer);
  36. }
  37.  
  38. STATIC UBYTE * __saveds
  39. ShowSeconds(struct Gadget *SomeGadget,WORD Level)
  40. {
  41.     STATIC UBYTE Buffer[15];
  42.  
  43.     SPrintf(Buffer,LocaleString(MSG_GLOBAL_SHOW_MINUTES_TXT),Level / 60,Level % 60);
  44.  
  45.     return(Buffer);
  46. }
  47.  
  48. STATIC struct Gadget *
  49. CreateAllGadgets(struct Configuration *Config,struct Gadget **GadgetArray,struct Gadget **GadgetList,BYTE *Default)
  50. {
  51.     struct Gadget        *Gadget;
  52.     struct NewGadget     NewGadget;
  53.     UWORD             Counter = 0;
  54.  
  55.     SZ_SizeSetup(Window -> WScreen,&UserFont,TRUE);
  56.  
  57.     memset(&NewGadget,0,sizeof(struct NewGadget));
  58.  
  59.     if(Gadget = CreateContext(GadgetList))
  60.     {
  61.         SZ_AddLeftOffset(SZ_LeftOffsetDelta(MSG_MODEMPANEL_MODEM_INIT_STRING_GAD,MSG_MODEMPANEL_BUSY_STRING_GAD));
  62.  
  63.         SZ_ResetMaxWidth();
  64.  
  65.         SZ_UpdateMaxWidth(STRING_KIND,NULL,14,NULL);
  66.  
  67.         SZ_SetWidth(SZ_ResetMaxWidth());
  68.  
  69.         NewGadget . ng_GadgetText    = LocaleString(MSG_MODEMPANEL_MODEM_INIT_STRING_GAD);
  70.         NewGadget . ng_GadgetID        = Counter;
  71.  
  72.         GadgetArray[Counter++] = Gadget = CreateGadget(STRING_KIND,Gadget,&NewGadget,
  73.             SZ_Adjust,    TRUE,
  74.             SZ_AutoWidth,    TRUE,
  75.  
  76.             GTST_MaxChars,    79,
  77.             GTST_String,    Config -> ModemConfig -> ModemInit,
  78.         TAG_DONE);
  79.  
  80.         NewGadget . ng_GadgetText    = LocaleString(MSG_MODEMPANEL_MODEM_EXIT_STRING_GAD);
  81.         NewGadget . ng_GadgetID        = Counter;
  82.  
  83.         GadgetArray[Counter++] = Gadget = CreateGadget(STRING_KIND,Gadget,&NewGadget,
  84.             SZ_Adjust,    TRUE,
  85.             SZ_AutoWidth,    TRUE,
  86.  
  87.             GTST_MaxChars,    79,
  88.             GTST_String,    Config -> ModemConfig -> ModemExit,
  89.         TAG_DONE);
  90.  
  91.         NewGadget . ng_GadgetText    = LocaleString(MSG_MODEMPANEL_MODEM_HANGUP_STRING_GAD);
  92.         NewGadget . ng_GadgetID        = Counter;
  93.  
  94.         GadgetArray[Counter++] = Gadget = CreateGadget(STRING_KIND,Gadget,&NewGadget,
  95.             SZ_Adjust,    TRUE,
  96.             SZ_AutoWidth,    TRUE,
  97.  
  98.             GTST_MaxChars,    79,
  99.             GTST_String,    Config -> ModemConfig -> ModemHangup,
  100.         TAG_DONE);
  101.  
  102.         NewGadget . ng_GadgetText    = LocaleString(MSG_MODEMPANEL_NO_CARRIER_STRING_GAD);
  103.         NewGadget . ng_GadgetID        = Counter;
  104.  
  105.         GadgetArray[Counter++] = Gadget = CreateGadget(STRING_KIND,Gadget,&NewGadget,
  106.             SZ_Adjust,    TRUE,
  107.             SZ_AutoWidth,    TRUE,
  108.  
  109.             GTST_MaxChars,    15,
  110.             GTST_String,    Config -> ModemConfig -> NoCarrier,
  111.         TAG_DONE);
  112.  
  113.         NewGadget . ng_GadgetText    = LocaleString(MSG_MODEMPANEL_NO_DIALTONE_STRING_GAD);
  114.         NewGadget . ng_GadgetID        = Counter;
  115.  
  116.         GadgetArray[Counter++] = Gadget = CreateGadget(STRING_KIND,Gadget,&NewGadget,
  117.             SZ_Adjust,    TRUE,
  118.             SZ_AutoWidth,    TRUE,
  119.  
  120.             GTST_MaxChars,    15,
  121.             GTST_String,    Config -> ModemConfig -> NoDialTone,
  122.         TAG_DONE);
  123.  
  124.         NewGadget . ng_GadgetText    = LocaleString(MSG_MODEMPANEL_CONNECT_STRING_GAD);
  125.         NewGadget . ng_GadgetID        = Counter;
  126.  
  127.         GadgetArray[Counter++] = Gadget = CreateGadget(STRING_KIND,Gadget,&NewGadget,
  128.             SZ_Adjust,    TRUE,
  129.             SZ_AutoWidth,    TRUE,
  130.  
  131.             GTST_MaxChars,    15,
  132.             GTST_String,    Config -> ModemConfig -> Connect,
  133.         TAG_DONE);
  134.  
  135.         NewGadget . ng_GadgetText    = LocaleString(MSG_MODEMPANEL_VOICE_STRING_GAD);
  136.         NewGadget . ng_GadgetID        = Counter;
  137.  
  138.         GadgetArray[Counter++] = Gadget = CreateGadget(STRING_KIND,Gadget,&NewGadget,
  139.             SZ_Adjust,    TRUE,
  140.             SZ_AutoWidth,    TRUE,
  141.  
  142.             GTST_MaxChars,    15,
  143.             GTST_String,    Config -> ModemConfig -> Voice,
  144.         TAG_DONE);
  145.  
  146.         NewGadget . ng_GadgetText    = LocaleString(MSG_MODEMPANEL_RING_STRING_GAD);
  147.         NewGadget . ng_GadgetID        = Counter;
  148.  
  149.         GadgetArray[Counter++] = Gadget = CreateGadget(STRING_KIND,Gadget,&NewGadget,
  150.             SZ_Adjust,    TRUE,
  151.             SZ_AutoWidth,    TRUE,
  152.  
  153.             GTST_MaxChars,    15,
  154.             GTST_String,    Config -> ModemConfig -> Ring,
  155.         TAG_DONE);
  156.  
  157.         NewGadget . ng_GadgetText    = LocaleString(MSG_MODEMPANEL_BUSY_STRING_GAD);
  158.         NewGadget . ng_GadgetID        = Counter;
  159.  
  160.         GadgetArray[Counter++] = Gadget = CreateGadget(STRING_KIND,Gadget,&NewGadget,
  161.             SZ_Adjust,    TRUE,
  162.             SZ_AutoWidth,    TRUE,
  163.  
  164.             GTST_MaxChars,    15,
  165.             GTST_String,    Config -> ModemConfig -> Busy,
  166.         TAG_DONE);
  167.  
  168.         NewGadget . ng_GadgetText    = LocaleString(MSG_MODEMPANEL_OK_STRING_GAD);
  169.         NewGadget . ng_GadgetID        = Counter;
  170.  
  171.         GadgetArray[Counter++] = Gadget = CreateGadget(STRING_KIND,Gadget,&NewGadget,
  172.             SZ_Adjust,    TRUE,
  173.             SZ_AutoWidth,    TRUE,
  174.  
  175.             GTST_MaxChars,    15,
  176.             GTST_String,    Config -> ModemConfig -> Ok,
  177.         TAG_DONE);
  178.  
  179.         NewGadget . ng_GadgetText    = LocaleString(MSG_MODEMPANEL_ERROR_STRING_GAD);
  180.         NewGadget . ng_GadgetID        = Counter;
  181.  
  182.         GadgetArray[Counter++] = Gadget = CreateGadget(STRING_KIND,Gadget,&NewGadget,
  183.             SZ_Adjust,    TRUE,
  184.             SZ_AutoWidth,    TRUE,
  185.  
  186.             GTST_MaxChars,    15,
  187.             GTST_String,    Config -> ModemConfig -> Error,
  188.         TAG_DONE);
  189.  
  190.         SZ_SetWidth(90);
  191.  
  192.         SZ_AddLeftOffset(SZ_LeftOffsetDelta(MSG_MODEMPANEL_DIAL_PREFIX_GAD,MSG_MODEMPANEL_TIME_TO_CONNECT_GAD));
  193.  
  194.         NewGadget . ng_GadgetText    = LocaleString(MSG_MODEMPANEL_DIAL_PREFIX_GAD);
  195.         NewGadget . ng_GadgetID        = Counter;
  196.  
  197.         GadgetArray[Counter++] = Gadget = CreateGadget(STRING_KIND,Gadget,&NewGadget,
  198.             SZ_Adjust,    TRUE,
  199.             SZ_AutoWidth,    TRUE,
  200.             SZ_NewColumn,    TRUE,
  201.  
  202.             GTST_MaxChars,    79,
  203.             GTST_String,    Config -> ModemConfig -> DialPrefix,
  204.         TAG_DONE);
  205.  
  206.         NewGadget . ng_GadgetText    = LocaleString(MSG_MODEMPANEL_DIAL_SUFFIX_GAD);
  207.         NewGadget . ng_GadgetID        = Counter;
  208.  
  209.         GadgetArray[Counter++] = Gadget = CreateGadget(STRING_KIND,Gadget,&NewGadget,
  210.             SZ_Adjust,    TRUE,
  211.             SZ_AutoWidth,    TRUE,
  212.  
  213.             GTST_MaxChars,    79,
  214.             GTST_String,    Config -> ModemConfig -> DialSuffix,
  215.         TAG_DONE);
  216.  
  217.         NewGadget . ng_GadgetText    = LocaleString(MSG_MODEMPANEL_REDIAL_DELAY_GAD);
  218.         NewGadget . ng_GadgetID        = Counter;
  219.  
  220.         GadgetArray[Counter++] = Gadget = CreateGadget(SLIDER_KIND,Gadget,&NewGadget,
  221.             SZ_Adjust,        TRUE,
  222.             SZ_AutoWidth,        TRUE,
  223.  
  224.             GTSL_Min,        0,
  225.             GTSL_Max,        360,
  226.             GTSL_Level,        Config -> ModemConfig -> RedialDelay,
  227.             GTSL_DispFunc,        ShowMinutes,
  228.             GTSL_LevelFormat,    "%s",
  229.             GTSL_MaxLevelLen,    10,
  230.         TAG_DONE);
  231.  
  232.         NewGadget . ng_GadgetText    = LocaleString(MSG_MODEMPANEL_DIAL_RETRIES_GAD);
  233.         NewGadget . ng_GadgetID        = Counter;
  234.  
  235.         GadgetArray[Counter++] = Gadget = CreateGadget(SLIDER_KIND,Gadget,&NewGadget,
  236.             SZ_Adjust,        TRUE,
  237.             SZ_AutoWidth,        TRUE,
  238.  
  239.             GTSL_Min,        0,
  240.             GTSL_Max,        100,
  241.             GTSL_Level,        Config -> ModemConfig -> DialRetries,
  242.             GTSL_LevelFormat,    "%3ld",
  243.             GTSL_MaxLevelLen,    3,
  244.         TAG_DONE);
  245.  
  246.         NewGadget . ng_GadgetText    = LocaleString(MSG_MODEMPANEL_DIAL_TIMEOUT_GAD);
  247.         NewGadget . ng_GadgetID        = Counter;
  248.  
  249.         GadgetArray[Counter++] = Gadget = CreateGadget(SLIDER_KIND,Gadget,&NewGadget,
  250.             SZ_Adjust,        TRUE,
  251.             SZ_AutoWidth,        TRUE,
  252.  
  253.             GTSL_Min,        0,
  254.             GTSL_Max,        1800,
  255.             GTSL_Level,        Config -> ModemConfig -> DialTimeout,
  256.             GTSL_DispFunc,        ShowSeconds,
  257.             GTSL_LevelFormat,    "%s",
  258.             GTSL_MaxLevelLen,    10,
  259.         TAG_DONE);
  260.  
  261.         NewGadget . ng_GadgetText    = LocaleString(MSG_MODEMPANEL_REDIAL_AFTER_HANGUP_GAD);
  262.         NewGadget . ng_GadgetID        = Counter;
  263.  
  264.         GadgetArray[Counter++] = Gadget = CreateGadget(CHECKBOX_KIND,Gadget,&NewGadget,
  265.             SZ_Adjust,    TRUE,
  266.             SZ_AutoWidth,    TRUE,
  267.  
  268.             GTCB_Checked,    Config -> ModemConfig -> RedialAfterHangup,
  269.         TAG_DONE);
  270.  
  271.         NewGadget . ng_GadgetText    = LocaleString(MSG_MODEMPANEL_CONNECT_AUTO_BAUD_GAD);
  272.         NewGadget . ng_GadgetID        = Counter;
  273.  
  274.         GadgetArray[Counter++] = Gadget = CreateGadget(CHECKBOX_KIND,Gadget,&NewGadget,
  275.             SZ_Adjust,    TRUE,
  276.             SZ_AutoWidth,    TRUE,
  277.  
  278.             GTCB_Checked,    Config -> ModemConfig -> ConnectAutoBaud,
  279.         TAG_DONE);
  280.  
  281.         NewGadget . ng_GadgetText    = LocaleString(MSG_MODEMPANEL_DROP_DTR_ON_HANGUP_GAD);
  282.         NewGadget . ng_GadgetID        = Counter;
  283.  
  284.         GadgetArray[Counter++] = Gadget = CreateGadget(CHECKBOX_KIND,Gadget,&NewGadget,
  285.             SZ_Adjust,    TRUE,
  286.             SZ_AutoWidth,    TRUE,
  287.  
  288.             GTCB_Checked,    Config -> ModemConfig -> DropDTR,
  289.         TAG_DONE);
  290.  
  291.         NewGadget . ng_GadgetText    = LocaleString(MSG_MODEMPANEL_NOCARRIER_IS_BUSY_GAD);
  292.         NewGadget . ng_GadgetID        = Counter;
  293.  
  294.         GadgetArray[Counter++] = Gadget = CreateGadget(CHECKBOX_KIND,Gadget,&NewGadget,
  295.             SZ_Adjust,    TRUE,
  296.             SZ_AutoWidth,    TRUE,
  297.             SZ_AlignExtra,    TRUE,
  298.  
  299.             GTCB_Checked,    Config -> ModemConfig -> NoCarrierIsBusy,
  300.         TAG_DONE);
  301.  
  302.         NewGadget . ng_GadgetText    = LocaleString(MSG_MODEMPANEL_CONNECTION_LIMIT_GAD);
  303.         NewGadget . ng_GadgetID        = Counter;
  304.  
  305.         GadgetArray[Counter++] = Gadget = CreateGadget(SLIDER_KIND,Gadget,&NewGadget,
  306.             SZ_Adjust,        TRUE,
  307.             SZ_AutoWidth,        TRUE,
  308.             SZ_AlignExtra,        TRUE,
  309.  
  310.             GTSL_Min,        0,
  311.             GTSL_Max,        1440,
  312.             GTSL_Level,        Config -> ModemConfig -> ConnectLimit,
  313.             GTSL_DispFunc,        ShowHours,
  314.             GTSL_LevelFormat,    "%s",
  315.             GTSL_MaxLevelLen,    7,
  316.         TAG_DONE);
  317.  
  318.         NewGadget . ng_GadgetText    = LocaleString(MSG_MODEMPANEL_LIMIT_MACRO_GAD);
  319.         NewGadget . ng_GadgetID        = Counter;
  320.  
  321.         GadgetArray[Counter++] = Gadget = CreateGadget(STRING_KIND,Gadget,&NewGadget,
  322.             SZ_Adjust,    TRUE,
  323.             SZ_AutoWidth,    TRUE,
  324.             SZ_LeaveFolder,    TRUE,
  325.  
  326.             GTST_MaxChars,    MAX_FILENAME_LENGTH,
  327.             GTST_String,    Config -> ModemConfig -> ConnectLimitMacro,
  328.         TAG_DONE);
  329.  
  330.         NewGadget . ng_GadgetID = Counter;
  331.  
  332.         GadgetArray[Counter++] = Gadget = CreateGadget(FILE_KIND,Gadget,&NewGadget,
  333.             SZ_Adjust,    TRUE,
  334.             SZ_AutoWidth,    TRUE,
  335.             SZ_PlaceLeft,    TRUE,
  336.         TAG_DONE);
  337.  
  338.         NewGadget . ng_GadgetText    = LocaleString(MSG_MODEMPANEL_TIME_TO_CONNECT_GAD);
  339.         NewGadget . ng_GadgetID        = Counter;
  340.  
  341.         GadgetArray[Counter++] = Gadget = CreateGadget(SLIDER_KIND,Gadget,&NewGadget,
  342.             SZ_Adjust,        TRUE,
  343.             SZ_AutoWidth,        TRUE,
  344.  
  345.             GTSL_Min,        0,
  346.             GTSL_Max,        360,
  347.             GTSL_Level,        Config -> ModemConfig -> TimeToConnect,
  348.             GTSL_DispFunc,        ShowMinutes,
  349.             GTSL_LevelFormat,    "%s",
  350.             GTSL_MaxLevelLen,    10,
  351.         TAG_DONE);
  352.  
  353.         SZ_UpdateMaxWidth(BUTTON_KIND,LocaleString(MSG_GLOBAL_USE_GAD),0,NULL);
  354.         SZ_UpdateMaxWidth(BUTTON_KIND,LocaleString(MSG_GLOBAL_CANCEL_GAD),0,NULL);
  355.         SZ_UpdateMaxWidth(BUTTON_KIND,LocaleString(MSG_GLOBAL_DEFAULT_GAD),0,NULL);
  356.  
  357.         SZ_SetWidth(SZ_ResetMaxWidth());
  358.  
  359.         NewGadget . ng_GadgetText    = LocaleString(MSG_GLOBAL_USE_GAD);
  360.         NewGadget . ng_GadgetID        = Counter;
  361.         NewGadget . ng_Flags        = 0;
  362.  
  363.         GadgetArray[Counter++] = Gadget = CreateGadget(BUTTON_KIND,Gadget,&NewGadget,
  364.             SZ_Adjust,    TRUE,
  365.             SZ_AutoWidth,    TRUE,
  366.             SZ_AlignExtra,    TRUE,
  367.             SZ_AlignLeft,    TRUE,
  368.             SZ_AlignBottom,    TRUE,
  369.         TAG_DONE);
  370.  
  371.         NewGadget . ng_GadgetText    = LocaleString(MSG_GLOBAL_CANCEL_GAD);
  372.         NewGadget . ng_GadgetID        = Counter;
  373.  
  374.         GadgetArray[Counter++] = Gadget = CreateGadget(BUTTON_KIND,Gadget,&NewGadget,
  375.             SZ_Adjust,    TRUE,
  376.             SZ_AutoWidth,    TRUE,
  377.             SZ_AlignRight,    TRUE,
  378.         TAG_DONE);
  379.  
  380.         if(Default)
  381.         {
  382.             NewGadget . ng_GadgetText    = LocaleString(MSG_GLOBAL_DEFAULT_GAD);
  383.             NewGadget . ng_GadgetID        = Counter;
  384.  
  385.             GadgetArray[Counter] = Gadget = CreateGadget(BUTTON_KIND,Gadget,&NewGadget,
  386.                 SZ_Adjust,    TRUE,
  387.                 SZ_AutoWidth,    TRUE,
  388.                 SZ_AlignCentre,    TRUE,
  389.             TAG_DONE);
  390.         }
  391.     }
  392.  
  393.     return(Gadget);
  394. }
  395.  
  396. BYTE
  397. ModemPanel(struct Configuration *Config,BYTE *Default)
  398. {
  399.     struct Window    *PanelWindow;
  400.     struct Gadget    *GadgetList = NULL;
  401.     struct Gadget    *GadgetArray[GAD_DEFAULT + 1];
  402.  
  403.     SaveConfig(Config,PrivateConfig);
  404.  
  405.     if(CreateAllGadgets(Config,GadgetArray,&GadgetList,Default))
  406.     {
  407.         if(PanelWindow = OpenWindowTags(NULL,
  408.             WA_Left,    GetScreenLeft(Window) + (GetScreenWidth(Window) - SZ_GetWindowWidth()) / 2,
  409.             WA_Top,        GetScreenTop(Window) + (GetScreenHeight(Window) - SZ_GetWindowHeight())    / 2,
  410.             WA_Width,    SZ_GetWindowWidth(),
  411.             WA_Height,    SZ_GetWindowHeight(),
  412.  
  413.             WA_Activate,    TRUE,
  414.             WA_DragBar,    TRUE,
  415.             WA_DepthGadget,    TRUE,
  416.             WA_RMBTrap,    TRUE,
  417.             WA_DepthGadget,    TRUE,
  418.             WA_CloseGadget,    TRUE,
  419.             WA_CustomScreen,Window -> WScreen,
  420.  
  421.             WA_IDCMP,    IDCMP_GADGETDOWN | IDCMP_ACTIVEWINDOW | IDCMP_CLOSEWINDOW | IDCMP_RAWKEY | IDCMP_VANILLAKEY | SLIDERIDCMP | CHECKBOXIDCMP | STRINGIDCMP | BUTTONIDCMP,
  422.  
  423.             WA_Title,    LocaleString(MSG_MODEMPANEL_MODEM_PREFERENCES_TXT),
  424.         TAG_DONE))
  425.         {
  426.             struct IntuiMessage    *Massage;
  427.             ULONG             IClass,Code;
  428.             struct Gadget        *Gadget;
  429.             BYTE             Terminated = FALSE;
  430.  
  431.             GuideContext(CONTEXT_MODEM);
  432.  
  433.             PushWindow(PanelWindow);
  434.  
  435.             AddGList(PanelWindow,GadgetList,(UWORD)-1,(UWORD)-1,NULL);
  436.             RefreshGList(GadgetList,PanelWindow,NULL,(UWORD)-1);
  437.             GT_RefreshWindow(PanelWindow,NULL);
  438.  
  439.             ActiveGadget = NULL;
  440.  
  441.             ClrSignal(SIG_BREAK);
  442.  
  443.             while(!Terminated)
  444.             {
  445.                 if(Wait(PORTMASK(PanelWindow -> UserPort) | SIG_BREAK) & SIG_BREAK)
  446.                 {
  447.                     SaveConfig(PrivateConfig,Config);
  448.  
  449.                     break;
  450.                 }
  451.  
  452.                 while(!Terminated && (Massage = (struct IntuiMessage *)GT_GetIMsg(PanelWindow -> UserPort)))
  453.                 {
  454.                     IClass    = Massage -> Class;
  455.                     Code    = Massage -> Code;
  456.                     Gadget    = (struct Gadget *)Massage -> IAddress;
  457.  
  458.                     GT_ReplyIMsg(Massage);
  459.  
  460.                     KeySelect(GadgetArray,GAD_CANCEL,Code,PanelWindow,&Gadget,&IClass,&Code);
  461.  
  462.                     if(IClass == IDCMP_ACTIVEWINDOW && ActiveGadget)
  463.                         ActivateGadget(ActiveGadget,PanelWindow,NULL);
  464.  
  465.                     if(IClass == IDCMP_GADGETDOWN)
  466.                     {
  467.                         if((Gadget -> GadgetType & GTYP_GTYPEMASK) == GTYP_STRGADGET)
  468.                             ActiveGadget = Gadget;
  469.                     }
  470.  
  471.                     if(IClass == IDCMP_CLOSEWINDOW)
  472.                     {
  473.                         SaveConfig(PrivateConfig,Config);
  474.  
  475.                         Terminated = TRUE;
  476.                     }
  477.  
  478.                     if(IClass == IDCMP_MOUSEMOVE)
  479.                     {
  480.                         switch(Gadget -> GadgetID)
  481.                         {
  482.                             case GAD_REDIALDELAY:
  483.  
  484.                                 Config -> ModemConfig -> RedialDelay = Code;
  485.                                 break;
  486.  
  487.                             case GAD_DIALRETRIES:
  488.  
  489.                                 Config -> ModemConfig -> DialRetries = Code;
  490.                                 break;
  491.  
  492.                             case GAD_DIALTIMEOUT:
  493.  
  494.                                 Config -> ModemConfig -> DialTimeout = Code;
  495.                                 break;
  496.  
  497.                             case GAD_TIME_TO_CONNECT:
  498.  
  499.                                 Config -> ModemConfig -> TimeToConnect = Code;
  500.                                 break;
  501.                         }
  502.                     }
  503.  
  504.                     if(IClass == IDCMP_GADGETUP)
  505.                     {
  506.                         switch(Gadget -> GadgetID)
  507.                         {
  508.                             case GAD_REDIALDELAY:
  509.  
  510.                                 Config -> ModemConfig -> RedialDelay = Code;
  511.                                 break;
  512.  
  513.                             case GAD_DIALRETRIES:
  514.  
  515.                                 Config -> ModemConfig -> DialRetries = Code;
  516.                                 break;
  517.  
  518.                             case GAD_DIALTIMEOUT:
  519.  
  520.                                 Config -> ModemConfig -> DialTimeout = Code;
  521.                                 break;
  522.  
  523.                             case GAD_TIME_TO_CONNECT:
  524.  
  525.                                 Config -> ModemConfig -> TimeToConnect = Code;
  526.                                 break;
  527.  
  528.                             case GAD_USE:
  529.  
  530.                                 Terminated = TRUE;
  531.  
  532.                                 strcpy(Config -> ModemConfig -> ModemInit,    SZ_GetString(GadgetArray[GAD_MODEMINIT]));
  533.                                 strcpy(Config -> ModemConfig -> ModemExit,    SZ_GetString(GadgetArray[GAD_MODEMEXIT]));
  534.                                 strcpy(Config -> ModemConfig -> ModemHangup,    SZ_GetString(GadgetArray[GAD_MODEMHANGUP]));
  535.                                 strcpy(Config -> ModemConfig -> DialPrefix,    SZ_GetString(GadgetArray[GAD_DIALPREFIX]));
  536.                                 strcpy(Config -> ModemConfig -> DialSuffix,    SZ_GetString(GadgetArray[GAD_DIALSUFFIX]));
  537.                                 strcpy(Config -> ModemConfig -> NoCarrier,    SZ_GetString(GadgetArray[GAD_NOCARRIER]));
  538.                                 strcpy(Config -> ModemConfig -> NoDialTone,    SZ_GetString(GadgetArray[GAD_NODIALTONE]));
  539.                                 strcpy(Config -> ModemConfig -> Connect,    SZ_GetString(GadgetArray[GAD_CONNECT]));
  540.                                 strcpy(Config -> ModemConfig -> Voice,        SZ_GetString(GadgetArray[GAD_VOICE]));
  541.                                 strcpy(Config -> ModemConfig -> Ring,        SZ_GetString(GadgetArray[GAD_RING]));
  542.                                 strcpy(Config -> ModemConfig -> Busy,        SZ_GetString(GadgetArray[GAD_BUSY]));
  543.                                 strcpy(Config -> ModemConfig -> Ok,        SZ_GetString(GadgetArray[GAD_OK]));
  544.                                 strcpy(Config -> ModemConfig -> Error,        SZ_GetString(GadgetArray[GAD_ERROR]));
  545.  
  546.                                 Config -> ModemConfig -> RedialAfterHangup    = SZ_GetChecked(GadgetArray[GAD_REDIAL]);
  547.                                 Config -> ModemConfig -> ConnectAutoBaud    = SZ_GetChecked(GadgetArray[GAD_AUTOBAUD]);
  548.                                 Config -> ModemConfig -> DropDTR        = SZ_GetChecked(GadgetArray[GAD_DROPDTR]);
  549.                                 Config -> ModemConfig -> NoCarrierIsBusy    = SZ_GetChecked(GadgetArray[GAD_NOCARRIER_IS_BUSY]);
  550.  
  551.                                 break;
  552.  
  553.                             case GAD_CANCEL:
  554.  
  555.                                 Terminated = TRUE;
  556.  
  557.                                 SaveConfig(PrivateConfig,Config);
  558.  
  559.                                 break;
  560.  
  561.                             case GAD_DEFAULT:
  562.  
  563.                                 *Default    = TRUE;
  564.  
  565.                                 Terminated    = TRUE;
  566.  
  567.                                 break;
  568.  
  569.                             case GAD_SELECT_MACRO:
  570.                             {
  571.                                 UBYTE             DummyBuffer[MAX_FILENAME_LENGTH];
  572.                                 struct FileRequester    *FileRequest;
  573.  
  574.                                 BlockWindow(PanelWindow);
  575.  
  576.                                 if(FileRequest = GetFile(LocaleString(MSG_TERMAUX_LOAD_FILE_TXT),"","",DummyBuffer,NULL,FALSE,FALSE,FALSE,LocaleString(MSG_GLOBAL_SELECT_TXT),TRUE))
  577.                                 {
  578.                                     GT_SetGadgetAttrs(GadgetArray[GAD_LIMIT_MACRO],PanelWindow,NULL,
  579.                                         GTST_String,DummyBuffer,
  580.                                     TAG_DONE);
  581.  
  582.                                     FreeAslRequest(FileRequest);
  583.                                 }
  584.  
  585.                                 ReleaseWindow(PanelWindow);
  586.                                 
  587.                                 break;
  588.                             }
  589.                         }
  590.                     }
  591.                 }
  592.             }
  593.  
  594.             RemoveGList(PanelWindow,GadgetList,(UWORD)-1);
  595.  
  596.             PopWindow();
  597.  
  598.             CloseWindow(PanelWindow);
  599.         }
  600.     }
  601.  
  602.     FreeGadgets(GadgetList);
  603.  
  604.     return((BYTE)memcmp(PrivateConfig -> ModemConfig,Config -> ModemConfig,sizeof(struct ModemSettings)));
  605. }
  606.